Zabbix 监控Rabbitmq集群
github上有一个非常不错的rabbitmq监控模板:rabbitmq-zabbix
本文档不赘述zabbix的配置细节,仅仅记录该rabbitmq监控模板的使用
一. 将github的模板文件克隆到服务器上:
1 | oot@hsq-mq-node1:~/rabbitmq-zabbix# ll |
其中:
scripts目录下是监控脚本文件
zabbix_agentd.d目录下是zabbix监控配置文件
rabbitmq.template.xml是zabbix监控模板.
二.将scripts目录下所有文件拷贝到/etc/zabbix/scripts目录下:
1 | work@hsq-mq-node1:/etc/zabbix/scripts$ ls rabbitmq/ -al |
文件分析:
- api.py –python脚本,利用rabbitmq的web api,获取监控的相关数据
- list_rabbit_nodes.sh –shell脚本,将参数传给api,获取节点数据
- list_rabbit_queues.sh –shell脚本,将参数传给api,获取队列数据
- rabbitmq-status.sh –shell脚本,将参数传给api,获取状态数据
- .rab.auth —参数设置,设置登陆rabbitmq的相关参数
三.将zabbix_agentd.d/zabbix-rabbitmq.conf文件拷贝到/etc/zabbix/zabbix_agentd.conf.d目录下
1 | root@hsq-mq-node1:~/rabbitmq-zabbix# ll /etc/zabbix/zabbix_agentd.conf.d |
注意: 关于scripts目录下的脚本文件和zabbix-rabbitmq.conf配置文件的存放路径,要参考zabbix-agentd.conf的zabbix客户端配置文件中定义的路径.例如以下是我服务器上的配置
1 | root@hsq-mq-node1:~/rabbitmq-zabbix# sed '/^#/d' /etc/zabbix/zabbix_agentd.conf | sed '/^$/d' |
四.因为rabbitmq服务器上有太多的默认和随机queue队列.所以需要对脚本的监控队列进行过滤.不然队列太多,会撑爆监控服务器.请参考我在github上提的issue: how to filter default queue?:
4.1 修改scripts目录下的.rab.auth隐藏配置文件:
1 | root@hsq-mq-node1:/etc/zabbix/scripts/rabbitmq# cat .rab.auth |
需要提前在rabbitmq集群中创建zabbix用户密码,并且给与monitor监控权限
4.2. 由于原始的监控模板只支持过滤特定的队列名,而不支持队列名通配符匹配.参考上面的Issue..所以需要对代码文件进行修改.
修改api.py文件:
1 | #第52行. 注释 check = [(x, y) for x, y in queue.items() if x in _filter] |
1 | #第52行. 将shared_items = set(_filter.items()).intersection(check) 更改为: |
参考如下:
1 | shared_items = [(x, y) for x, y in queue.items() if x == u'name' and y.startswith(_filter['name'])] |
另外下列位置也需要进行同样的修改:
1 | line 77 |
修改完后保存文件
五.启动zabbix_agentd服务
1 | systemctl start zabbix-agent |
六,配置zabbix监控主机,导入监控模板.搞定